/* Copyright (c) 2021 Xie Meiyi(xiemeiyi@hust.edu.cn) and OceanBase and/or its affiliates. All rights reserved.
miniob is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
         http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */

//
// Created by Longda on 2021/4/13.
//

#include "session_event.h"

// 构造函数
SessionEvent::SessionEvent(ConnectionContext *client) : client_(client)
{
}

// 析构函数
SessionEvent::~SessionEvent()
{
}

// 获取客户端的函数
// 这里client是一个结构体，结构体的类型是ConnectionContext
ConnectionContext *SessionEvent::get_client() const
{
  return client_;
}

// 返回的是一个session类
Session *SessionEvent::session() const
{
  return client_->session;
}

// 得到字符串的一个函数，这个字符串的内容就是response
const char *SessionEvent::get_response() const
{
  return response_.c_str();
}

  /**
   * 函数功能是根据param来重新设置类成员response_
   * @param char类型的response
   */
void SessionEvent::set_response(const char *response)
{
  set_response(response, strlen(response));
}

// assign方法是将原先的字符串清空，然后赋予新的值作为替换
void SessionEvent::set_response(const char *response, int len)
{
  response_.assign(response, len);
}


  /**
   * 换一种参数去设置response的值
   */
void SessionEvent::set_response(std::string &&response)
{
  response_ = std::move(response);
}

  /**
   * 得到类成员response的长度
   */
int SessionEvent::get_response_len() const
{
  return response_.size();
}

  /**
   * 通过这个函数能得到类成员client_的buf，buf是一个数组，通过调用这个函数去获取缓冲区
   */
char *SessionEvent::get_request_buf()
{
  return client_->buf;
}

/**
 * 通过这个函数能得连接的缓冲池的大小
 */
int SessionEvent::get_request_buf_len()
{
  return SOCKET_BUFFER_SIZE;
}
